home *** CD-ROM | disk | FTP | other *** search
/ Hottest 6 / Hottest 6 (1996)(PDSoft)[!].iso / software / programming / c / sc6_3 / readme_6.3 < prev    next >
Text File  |  1978-11-24  |  35KB  |  939 lines

  1.  
  2.  Copyright (c) 1992-1993 SAS Institute, Inc, Cary, NC
  3.  All Rights Reserved
  4.  
  5.  This document describes bug fixes and enhancements made in the 6.3
  6.  release of the SAS/C Development System for AmigaDOS.  The changes
  7.  for the 6.3 release are a superset of the changes for the 6.1 and
  8.  6.2 releases; all 6.1 and 6.2 fixes are included with 6.3.  Therefore,
  9.  the patch process will work correctly whether you have installed the
  10.  previous patches or not.
  11.  
  12.  Our philosophy in reporting fixed bugs is that users have a need and a
  13.  right to know what has changed in the latest release.  This means 
  14.  publishing a list of fixed bugs with each update.  Please don't be 
  15.  alarmed by the number of items on the list; many of the "bugs" reported
  16.  here are not very serious, and others are very obscure.  Some of them 
  17.  have only been reported once, others have been reported many times.
  18.  Thanks to all the alert programmers out there who have brought problems
  19.  to our attention and provided the detailed information necessary for us
  20.  to reproduce and fix the problem.
  21.  
  22.  If this update does not fix a problem that you have been having, please
  23.  contact our Technical Support Division for help as soon as possible.
  24.  
  25.  All reproducable reported CXERRs, Enforcer hits, and cases of bad code
  26.  are fixed with each release.  If you get one of these, please contact
  27.  technical support immediately.  It will help if you have a compilable
  28.  test case.
  29.  
  30.  In addition to the specific bugs listed, several code generation bugs were
  31.  fixed in the optimizers and the code generator (sc2).  Since the code 
  32.  generation bugs did not affect most people, and they are not easy to 
  33.  describe or reproduce, we will not describe them individually here.  
  34.  We suggest that you recompile all your code if it is behaving strangely.
  35.  
  36.  A note about the release numbering system is probably in order.  With 
  37.  version 6, we have adopted Commodore's shared library numbering system 
  38.  for the  entire product.  This means that the number to the right of the 
  39.  decimal in the version number should be considered a number in its own 
  40.  right, not merely as a fraction.  For example, our first release was 
  41.  6.0, then 6.1, then 6.2; this release is 6.3; the logical progression
  42.  will be 6.4, ... 6.9, 6.10, 6.11, ..., 6.99, 6.100, 6.101 and so forth.
  43.  This is a change from version 5, in which the number to the right of the
  44.  decimal was considered a fraction, with possible leading zeroes.  We 
  45.  reserve the right to skip some numbers to keep track of internal
  46.  releases, but the number to the right of the decimal will always 
  47.  increase with a new release.
  48.  
  49.  Also note that not all executables and shared libraries have been modified.
  50.  Those that have not been modified keep their old version number (either
  51.  6.0, 6.1 or 6.2).  This is normal.  A list of modified files appears at
  52.  the end of this document.
  53.  
  54.  Users of Comeau C++ should be aware that Comeau Systems has produced a
  55.  new version, version 3.0b, that has integrated support for SAS/C V6.
  56.  Version 6.3 works well with Comeau C++.  Contact Comeau Systems for
  57.  information on obtaining the 3.0b patch, which is a free upgrade for
  58.  registered Comeau C++ V3.0 customers.
  59.  
  60.  ***************************** IMPORTANT ************************************
  61.  Many customers are experiencing problems that could easily be avoided by 
  62.  referring to the correct sections of the manual. Specifically
  63.  
  64.  1)  There are two sections in the manual covering GSTs.  The first
  65.      is in the User's Guide Volume 2 in the Utilities section.  The
  66.      second starts on page 21 in the Library Reference Manual.  Both
  67.      sections contain information needed to use GSTs.
  68.  
  69.  2)  A guide to converting programs from version 5 to version 6 can be found
  70.      in Appendix 5 of the User's Guide Volume 1.  
  71.  
  72.  3)  With a floppy disk install, no icons will be copied to the created
  73.      disks.  This means that you will have to work from the CLI only,
  74.      or that you will have to delete something off of the disks in order
  75.      to make room for the icons.  This is not mentioned in the manual
  76.      and should be.  For more information on workarounds for this,
  77.      refer to Problem 5 under the Miscellaneous Problems button on the 
  78.      main help screen for Common Problems.
  79.  
  80. =============================
  81. Library and Header Changes
  82. =============================
  83.  
  84. Fixed in 6.3
  85.  
  86.  The difftime() function was returning incorrect values when using
  87.  MATH=FFP.
  88.  
  89.  Possible crash in startup code when using stack extension or the 
  90.  __stack external variable to set your stack size.  NOTE: YOU SHOULD
  91.  RELINK ALL YOUR PROGRAMS THAT USE STACK EXTENSION OR __stack!
  92.  
  93.  The __assert function prototype in assert.h did not match the 
  94.  documentation in the library reference manual.  However, __assert
  95.  is intended for compiler and library internal use only, so the
  96.  documentation should be considered incorrect.
  97.  
  98.  The %i format identifier for scanf() did not work properly with 0.
  99.  scanf() took the 0 as the beginning of an octal number.
  100.  
  101.  Both builtin strcmp() and the library strcmp() function did 
  102.  comparisons based on signed chars instead of unsigned chars.
  103.  
  104.  ferror() indicated a read error if you attempted to read a file that
  105.  was at EOF.
  106.  
  107.  fscanf() did not accept the field width specifier for the %x format.
  108.  
  109.  stco_i() caused a machine crash.
  110.  
  111.  The file "LIB:utillib.with" discussed on page 117 of the User's Guide
  112.  was inadvertently omitted from the product.  As of the 6.3 patch, it
  113.  has been added.
  114.  
  115.  The stacksize() and stackused() functions did not work.  They do now.
  116.  
  117.  In math.h, the exception type codes _PLOSS and _RANGE were both defined
  118.  to be 6.  _PLOSS is not currently used, but was changed to 7 in case
  119.  it is used in the future.
  120.  
  121.  __timecvt() filled in the ds_Tick field with an incorrect value.
  122.  
  123.  open() didn't correctly set errno when you opened a file that already
  124.  exists in O_EXCL mode.
  125.  
  126.  Floating point overflow was printed by printf() and related functions as
  127.  "Inf0.00000" instead of just "Inf".
  128.  
  129.  dfind() returned a 1 when asked to find a wildcard pattern and
  130.  no files match the pattern.  It should have returned -1 instead.
  131.  
  132.  timer() function caused references to illegal addresses.
  133.  
  134. Fixed in 6.2
  135.  
  136.  #pragmas were incorrect for CachePreDMA() and CachePostDMA().
  137.  
  138.  errno was not set correctly if open() failed.
  139.  
  140.  datecmp() function did not return correct values.
  141.  
  142.  libinit.o did not properly set up global data for the __aligned
  143.  keyword.
  144.  
  145.  The format specifier %06.2f did not properly pad with zeros.
  146.  
  147.  The base of the system library keymap.library, KeymapBase, was not being 
  148.  auto-initialized properly.
  149.  
  150.  fclose(stderr) caused the invoking shell to stay locked.
  151.  
  152.  cback.a did not work under 1.3.
  153.  
  154.  fputc() did not return the proper value for negative numbers.
  155.  
  156.  __aligned did not work for global variables in a shared library
  157.  because of a problem in libinit.c
  158.  
  159. Fixed in 6.1
  160.  
  161.  The tmpnam() function used the first three characters of the command
  162.  as invoked in constructing the name of the temporary file.  This did not
  163.  work if you invoked a command via an explicit path that contains a ':' or 
  164.  '/' in the first three characters.  This was the cause of several strange 
  165.  problems in the SC and SLINK commands as well.
  166.  
  167.  In __main(), the return value for the Open() which opens the stdio window
  168.  was never checked.  Also, __main() now checks the __stdiowin[] array and
  169.  does not add the program name if __stdiowin[] does not end in a "/".
  170.  
  171.  Some system tagcall routines did not have tagcall pragmas, most notably
  172.  EasyRequest() and BuildEasyRequest().
  173.  
  174.  <dos.h> did not include the definitions for REG_FP0 - REG_FP7.  These
  175.  definitions are used by getreg() and putreg().
  176.  
  177.  scanf() routine failed to scan a floating point number with a leading '+'
  178.  character.
  179.  
  180.  fread() did not set EOF flag properly.  (It did return the correct return
  181.  code, however.)
  182.  
  183.  forkl() did not correctly open "*" for stdin and stdout.
  184.  
  185.  If the UTILLIB option was used and an auto-open library failed to open,
  186.  the __autoopenfail() function crashed the machine when invoked.
  187.  
  188.  Autoopen libraries were opened twice and closed once because the autoopen
  189.  functions were compiled with PARMS=BOTH.
  190.  
  191.  <sys/dir.h> was not protected from multiple #includes.
  192.  
  193.  m68881.h did not include definitions for fgetexp() and flog2().
  194.  
  195.  <stat.h> did not contain definitions for the S_xxx bits.  (They were
  196.  previously defined in <fcntl.h>; now they are in both files.)
  197.  
  198.  The bits returned by stat() in the st_mode field were incorrect.
  199.  The 4 bits corresponding to the "rwed" attributes were OPPOSITE what
  200.  they should be.  All other bits were correct.
  201.  
  202.  <proto/all.h> did not include all <proto/xxx.h> files, notably
  203.  <proto/rexxsyslib.h>.
  204.  
  205.  __builtin_memcmp() generated incorrect code when a variable
  206.  containing zero for the length to be compared was passed to it.
  207.  
  208.  In <proto/layers.h>, LayersBase was declared struct LayersBase *; it is
  209.  now declared struct Library *.
  210.  
  211.  Closing a file descriptor twice caused a crash.  While this is arguably
  212.  an illegal operation, most systems accept it silently.
  213.  
  214. =====================
  215. CPR Debugger Changes
  216. =====================
  217.  
  218. Fixed in 6.3
  219.  
  220.  CPR "grabbed" the input focus on whatever screen it was running
  221.  on when the user made a menu selection, even if it was not the
  222.  active window.  This was most noticeable on the WorkBench
  223.  screen (CPR -w).
  224.  
  225.  libinit.c failed to decrement the lib_OpenCnt field in the
  226.  library base if a memory allocation failed during library
  227.  startup.
  228.  
  229.  CPR now works with Enforcer on 68040 machines.  A version 
  230.  of Enforcer that supports the 68040 is required.
  231.  
  232.  CPR left extra MsgPorts allocated on exit.
  233.  
  234.  After using the SOURCE command, crashes were possible.
  235.  
  236.  Global data was not displayed correctly if the program was
  237.  compiled with DATAMEM=FAST.
  238.  
  239.  Executing a CATCH command followed immediately by an OPT TASK
  240.  command in a REXX script might have caused a crash.
  241.  
  242.  CPR failed to take into account the full set of viewmodes from
  243.  the workbench in an AGA machine.  This caused it to possibly
  244.  open in the wrong resolution when opening its own screen.
  245.  (CPR also now uses SA_LikeWorkbench when appropriate.)
  246.  
  247. Fixed in 6.2
  248.  
  249.  CPR crashed when opened on a WorkBench screen in Productivity mode.
  250.  
  251.  CPR got enforcer hits when using the MODULE command or window.
  252.  
  253.  CPR crashed on exit under 1.3.
  254.  
  255.  Typedefs of arrays were not handled properly.
  256.  
  257. Fixed in 6.1
  258.  
  259.  CPR didn't pass argv[0] correctly when invoked from WorkBench.
  260.  
  261.  CPR didn't get the address right for the first data item in the FAR
  262.  or CHIP sections.
  263.  
  264.  The -device, -unit and -speed parameters were not implemented on
  265.  cross CPR.
  266.  
  267.  Some programs required abnormally long times to load under CPR.  This load
  268.  time has been reduced.
  269.  
  270.  Watch and register windows are no longer covered up by the source window
  271.  if they are opened via command-line options.
  272.  
  273.  Hitting the ESC key in the CPR WMSG window caused the window to go away.
  274.  Additional WMSG commands after this crashed CPR.
  275.  
  276.  Highlighting was messed up if a window was resized while something was
  277.  highlighted.
  278.  
  279.  The ECHO command didn't work reliably from an externally-
  280.  invoked AREXX script.
  281.  
  282.  The CPR screen stayed open if a visitor window was present, but CPR
  283.  exited anyway.
  284.  
  285.  The Calls window sometimes trashed its own bottom border.
  286.  
  287.  CPR was doing incorrect pointer arithmetic for multidimensional
  288.  arrays.
  289.  
  290. ==============================
  291. Parsing and Diagnostic Changes
  292. ==============================
  293.  
  294. Fixed in 6.3
  295.  
  296.  NEW OPTION: the STRSECT option has been added to the SC command.
  297.  If specified, STRSECT chooses the location that strings will be
  298.  stored.  Possible values are NEAR, FAR, CODE and DEFAULT.  The
  299.  default is DEFAULT.  Acceptable abbreviations are N, F, C and D.
  300.  If NEAR, FAR or CODE is specified, the strings will be placed
  301.  into the appropriate section - near, far or code.  If DEFAULT
  302.  is specified and STRMERGE is on, strings will go into the code
  303.  section.  If DEFAULT is specified and STRMERGE is not on,
  304.  strings will go into the default data section as set by the
  305.  DATA= option.  It doesn't matter whether the STRMERGE option
  306.  appears before or after the STRSECT option.
  307.  
  308.  Redundant keywords are now a warning instead of an error.
  309.  (For example, "long long x;")
  310.  
  311.  Enforcer hits were generated if using the ANSI option, a GST
  312.  file, and misspelled union member names.
  313.  
  314.  Enforcer hits when compiling with DEBUG=FF, a GST file, and 
  315.  the GENPROTO compiler option.
  316.  
  317.  The PPONLY option stripped #pragma statements.  These should
  318.  have been passed through.
  319.  
  320.  The __REVISION__ preprocessor symbol was not updated in versions
  321.  6.1 or 6.2.  It is now "3" to reflect revision 6.3.
  322.  
  323.  New preprocessor symbols _OPT, _OPTINLINE, and _DEBUG have been
  324.  added.  They are defined to 1 if the corresponding SC command-line
  325.  option is active.  _DEBUG is set to 1 if any debug option except
  326.  NODEBUG is specified.
  327.  
  328.  The SC5 command attempted to invoke the code generator even if it
  329.  was generating prototypes or preprocessor-only output.
  330.  
  331.  The SC5 command returned a return code of zero when the compile
  332.  step succeeded but the link step failed.
  333.  
  334.  The SC command generated crashes and/or Enforcer hits when invoked
  335.  with a filename of '*' and either XREF or LIST was on.  This could
  336.  have occurred if you compiled from within SE and selected LIST or
  337.  XREF in your SCOPTIONS file.
  338.  
  339. Fixed in 6.2
  340.  
  341.  There was a problem if a C source file was used to create a GST,
  342.  and that file defined external data.  IT IS NOW NOT POSSIBLE TO
  343.  DEFINE EXTERNAL DATA if the MAKEGST option is on.  We recommend
  344.  compiling the file twice, once with MAKEGST and NOOBJNAME, the
  345.  second time with the normal GST option, or that you use a 
  346.  standalone .c file not part of your project as your GST 
  347.  generator file.
  348.  
  349.  An extra quoted string at the end of a preprocessor statement (illegal
  350.  according to the ANSI standard) was incorrectly concatenated to the 
  351.  next quoted string in the source.
  352.  
  353.  The OBJNAME option did not accept the null string "", which should
  354.  indicate the current directory.  It now does.
  355.  
  356.  String constants that appeared on a preprocessor statement in an
  357.  illegal position sometimes were concatenated before the next string
  358.  constant to appear in legal code.
  359.  
  360.  The compiler was producing an invalid error if the GENPROTO option
  361.  was on and an __asm function was declared that took no parameters,
  362.  and the function so declared was used somewhere in the same file
  363.  without otherwise being declared.
  364.  
  365.  Error 72, "conflict with previous declaration", is now a warning if
  366.  the only conflict is in a "const" or "volatile" specification on
  367.  the item declared or parameters to a function declared.
  368.  
  369.  The compiler silently accepted the following illegal
  370.  constructs:
  371.  
  372.     char x[] = {"ab", "cd"};
  373.     char y[] = {'a', "bc"};
  374.  
  375.  The compiler did not put the "const" or "volatile" keywords on
  376.  prototypes generated with the GENPROTO option, or on types printed
  377.  in error and warning messages.
  378.  
  379.  If the NOMULTIPLEINCLUDES option was on, but you included the same
  380.  file with differences only in the case of the filename, the file was
  381.  included twice anyway.
  382.  
  383. Fixed in 6.1
  384.  
  385.  The __chip keyword produced an Error 82 for arrays declared that were
  386.  larger than 64k-1 bytes.  This restriction has been removed.
  387.  
  388.  No diagnostic was produced for assigning a regargs function to a stdargs
  389.  function pointer, or vice-versa.  However, the warning "stdargs used for
  390.  indirect function call" was produced inappropriately for calls through
  391.  function pointers declared __stdargs.  The inappropriate warning has been
  392.  removed;  the assignment now generates Warning 225.
  393.  
  394.  Error 15 was generated inappropriately for a call via a function
  395.  pointer defined via a typedef.
  396.  
  397.  Invoking a preprocessor macro with no parameters that is followed
  398.  immediately by a parameter list containing the preprocessor macro name once
  399.  again followed by a parameter list failed to expand the second invocation of
  400.  the macro.  (This is an extremely obscure case, so don't worry if you didn't
  401.  understand the explanation.)
  402.  
  403.  If an undefined member of a structure was accessed, that structure was no
  404.  longer considered equivalent to other structures with identical member
  405.  lists.  This generated warning cascades.
  406.  
  407.  National characters above 0x80 were not permitted in variable names.
  408.  
  409.  When using the GenProto option for a file with more than one period in the
  410.  name, (ex. a.b.c), the generated proto file was placed into a .h file with
  411.  only the first part if the original name (ex. a.h).
  412.  
  413.  The ERROR=ALL option to the SC command turned on all messages, including
  414.  those normally suppressed.  It should have just promoted the warnings that
  415.  were already enabled to errors.
  416.  
  417.  The -ca option on the SC5 command incorrectly enabled Warning 148.
  418.  
  419.  Error 67 was generated if the __inline keyword was placed on the
  420.  definition of a function returning a pointer to a structure.
  421.  
  422.  C++-style comments were not recognized if the ANSI option is on.  While
  423.  this is arguably correct, since C++ comments are non-ANSI, many users 
  424.  requested that they be made to work.
  425.  
  426.  If the GST has only <proto/intuition.h> in it, then you #include
  427.  <intuition/intuitionbase.h> in the .c file, IntuitionBase was considered
  428.  to be an undefined structure tag.
  429.  
  430.  Generating a GST when the file being compiled erroneously tried to access a
  431.  structure that had not been defined resulted in a crash.
  432.  
  433.  Generating a GST with static data defined in a header file now generates an
  434.  error message.  This is invalid; data cannot be defined in a header file, 
  435.  and there is no way to make a static data item into a simple declaration, as
  436.  is done with external data.
  437.  
  438. ====================================
  439. Code Generation/Optimization Changes
  440. ====================================
  441.  
  442. Fixed in 6.3
  443.  
  444.  When using the global optimizer on an Amiga 1200, the screen
  445.  would blank during optimization and never recover.  (The
  446.  compilation would complete successfully, however.)
  447.  
  448.  When using a #pragma tagcall with short integers, integral 
  449.  constants were pushed as shorts as if for any other function
  450.  call.  However, tagcall functions always expect longs.  The
  451.  compiler now promotes all "int" values passed to tagcall
  452.  functions to "long" automatically, even if SHORTINT is on.
  453.  
  454.  Compiler sometimes generated byte immediate addressing when
  455.  word immediate addressing was required.
  456.  
  457.  Passing a structure consisting only of "char" elements by
  458.  value caused the values to be received incorrectly by the
  459.  called routine.
  460.  
  461.  Taking the address of a static function previously defined in
  462.  a module compiled with the ABSFUNCPTR and CPU=68030 options
  463.  generated an incorrect result.
  464.  
  465.  If the code section was too large to allow use of the STRMERGE
  466.  compiler option, a CXERR was produced.  This has been changed
  467.  to an error message instead.
  468.  
  469.  NOOPTINLINE did not turn off inlining if OPTDEPTH, OPTCOMP or
  470.  OPTRDEPTH were turned on.  NOOPTINLINE should prevent any and
  471.  all inlining.  It now works correctly.
  472.  
  473. Fixed in 6.2
  474.  
  475.  MATH=68881 was broken when dealing with constants.
  476.  
  477.  With CODE=FAR and CPU=68020, foward references to functions were
  478.  not right.
  479.  
  480.  Bitfields of 32 bits with CPU=68020 did not work.
  481.  
  482.  Referencing formal register parameters when there were more than 
  483.  32k of autos was broken.
  484.  
  485.  SC2 could generate bad code for __asm functions with many parameters 
  486.  
  487. Fixed in 6.1
  488.  
  489.  The return value of a function was lost when returning from a call in
  490.  which the stack extension code allocated additional stack.
  491.  
  492.  Auto variables sometimes got trashed when using longjmp() to jump
  493.  up the stack.
  494.  
  495.  When SHORTINT is selected, all numbers between 32k and 64k were translated
  496.  improperly as negative numbers between -1 and -32k.
  497.  
  498.  Initialization of automatic arrays and structures didn't work if the
  499.  initializers did not contain as many elements as the array or struct
  500.  and the STRMERGE option was used.
  501.  
  502.  The DISASM option caused a crash if you specified a directory name
  503.  as the output filename.
  504.  
  505.  The assembler code produced by the DISASM option included MULSL.L and
  506.  DIVSL.L instructions instead of MULS.L and DIVS.L.
  507.  
  508.  The DISASM option produced bad assembly code if you had calls to
  509.  __builtin_emit() in your code.
  510.  
  511.  An incorrect function pointer was generated for a forward reference
  512.  to a static function if the ABSFUNCPOINTER option was specified.
  513.  
  514.  With the global optimizer active, calls to tagcall functions made
  515.  via #pragma tagcall sometimes did not clean up the stack properly.
  516.  
  517.  Functions declared __inline sometimes did not generate actual callable
  518.  instances of themselves when they should have.  This occurred if you
  519.  did not run the global optimizer; if the function called itself
  520.  recursively; or if the function was called from outside the current
  521.  module.  The functions would generate an unresolved symbol at link
  522.  time.
  523.  
  524.  FPrintf and other tagcall functions that take an OPTIONAL tagcall list
  525.  generated an error message from phase 2.  #pragma tagcall functions
  526.  now silently accept empty tagcall lists.
  527.  
  528.  Implicit references to substructures generated incorrect offsets if the
  529.  substructure was not the first item inside the main structure.
  530.  
  531.  Adjacent bitfields declared explicitly "short" or "long" were not merged
  532.  properly.  This caused the structures containing them to be larger than
  533.  they needed to be.  Bitfields declared "int" or "char" were not affected.
  534.  
  535.  Some variables were listed with the wrong type in the compiler-generated
  536.  cross-reference.  This occurred after a typedef definition.
  537.  
  538. =================
  539. SE Editor Changes
  540. =================
  541.  
  542. Fixed in 6.3
  543.  
  544.  SE created an incorrectly-named icon during a block write operation
  545.  in some cases.
  546.  
  547.  SE did not handle insertions for the clipboard correctly if an initial 
  548.  read succeeded for fewer bytes than requested, but additional data was
  549.  available anyway.
  550.  
  551.  SE did not allow a filename to be typed to the Open and Save As menu
  552.  selections under AmigaDOS 1.3.
  553.  
  554.  With case-sensitivity turned off, the SEARCH command failed to find
  555.  some strings with embedded numerals unless the numbers were escaped
  556.  with \.
  557.  
  558.  Crash in SE if you tried to copy a block that overlapped two lines
  559.  to the end of the second line.
  560.  
  561.  If you tried to compile a file from the editor and there was a space
  562.  in the device name the file existed on, the compiler did not receive
  563.  the file name correctly and a spurious requester was raised.
  564.  
  565.  If you created keystroke macros 1 through 0, saved them, and then 
  566.  reloaded them, macros 6 through 0 were not reloaded.
  567.  
  568. Fixed in 6.2
  569.  
  570.  Busy pointer did not change back to ready after a compile until
  571.  it was moved.
  572.  
  573.  SE hung if the zoom gadget was hit with a large font.
  574.  
  575.  SE did not save backup file and protection bit if rename backup
  576.  option was selected.
  577.  
  578.  Going from an interlaced screen to a non-interlaced screen would fail
  579.  if the interlaced window was too small.
  580.  
  581.  
  582. Fixed in 6.1 
  583.  
  584.  SE was not pure (as reported by WShell).
  585.  
  586.  SE returned immediately when asked to compile the file in the editor
  587.  buffer (F4 key) if the flag was enabled under AmigaDOS 2.0 that allows
  588.  the "*" character to be a wild card (RNF_WILDSTAR).
  589.  
  590.  Turning on the "Use TAB Character" option and the Autoindent option
  591.  resulted in garbage characters being added to the file when you hit
  592.  RETURN after entering an open curly brace.
  593.  
  594.  SE did not turn the mouse pointer back on during time-consuming operations
  595.  (like SEARCH/REPLACE).
  596.  
  597.  SE sometimes opened a window smaller than its menus required when switching
  598.  from interlaced to non-interlaced mode.
  599.  
  600.  It was impossible to configure the screen colors and save them.  You
  601.  could cycle the colors while in SE, but when you exited, the colors weren't
  602.  saved.
  603.  
  604.  A bad version of the editor macro "findsym.se" was provided.
  605.  
  606.  SE set no pointer during compilation.  It now sets a busy pointer.
  607.  
  608.  SE did not correctly add the backup file extension when saving backup files.
  609.  
  610.  SE did not accept national characters that were entered through a REXX script.
  611.  
  612. =============================
  613. SCMSG Message Browser Changes
  614. =============================
  615.  
  616. Fixed in 6.3
  617.  
  618.  The "delfile" REXX command caused a crash.
  619.  
  620.  SCMSG allowed you to open the options window twice with two selections
  621.  of the menu item, but then failed to close the first window.
  622.  
  623.  SCMSG could trash the GOTOFILE option if NOGOTOFILE was set in the
  624.  options file, then changed later.
  625.  
  626. Fixed in 6.2
  627.  
  628.  The NEXT and PREV REXX commands didn't cycle back to the top or bottom
  629.  of the message list as documented.
  630.  
  631.  The PREV REXX command returned an incorrect return code regardless
  632.  of the success status.
  633.  
  634. Fixed in 6.1
  635.  
  636.  SCMSG menu colors were funny-looking on an 8-color workbench screen.
  637.  
  638.  SCMSG didn't protect itself against the editor exiting while it was
  639.  processing a message to the editor.
  640.  
  641.  SCMSG did not open on the default public screen.  It now does so; it
  642.  also accepts a SCREEN <name> command-line parameter and an
  643.  "opts screen <name>" AREXX command (see below).
  644.  
  645.  SCMSG redrew its message lines even if they had not changed when receiving
  646.  new messages. This caused unnecessary flicker.
  647.  
  648.  SCMSG didn't set the AUTOEDIT option even if the options file said to.
  649.  It also reset the GOTOFILE and GOTOLINE options to the SE defaults even
  650.  if the user had erased those values.
  651.  
  652.  SCMSG now accepts the following escape sequences in the REXX commands that
  653.  it sends to the programmed editor.  These are in addition to the %f, %l
  654.  and so forth that are documented in the manual:
  655.  
  656.     %# - message number
  657.     %m - message text
  658.     %e - alternate filename
  659.     %k - alternate line number
  660.  
  661.  Note also that the %c escape sequence gives the message Class (ERROR/
  662.  WARNING) rather than the column number, as documented in the manual.  This
  663.  was an error in the manaul.
  664.  
  665.  SCMSG now accepts the following new or modified REXX commands.  All old
  666.  commands still work.
  667.  
  668.     "build [options]"
  669.  
  670.        The "build" REXX command now passes any options specified on to the
  671.        SMAKE utility.
  672.  
  673.     "hide" [option]
  674.        The "hide" REXX command takes "rexxonly", "norexxonly", "autoedit", 
  675.        and "noautoedit" as options.  The options control when the window will
  676.        reappear.  The "wait" option listed in the manual is the default, so
  677.        there is no need to specify it.
  678.  
  679.     "number"
  680.        synonym for "errnum"
  681.  
  682.     "newbld <compunit>"
  683.        tells SCMSG to clear all messages for the specified compilation unit.
  684.        Sent by the compiler when a new compile is begun to delete all old
  685.        messages.  It also forces SCMSG to invoke the editor on the next new
  686.        message if the AUTOEDIT option is on.
  687.  
  688.     "newmsg "<compunit>" "<file>" <line> 0 "" 0 <class> <errnum> <text>"
  689.        adds a message to SCMSG's list.  <compunit> is the compilation unit
  690.        the message is associated with (the .c filename), <file> and <line>
  691.        indicate the filename and line number of the message, <class> is
  692.        one of "Error", "Warning" or "Info", <errnum> is a positive error
  693.        number, and <text> is the message text.  The 0 "" 0 in the middle
  694.        must appear exactly as written.  If the message text contains the
  695.        words 'See line <number> file "name"', the <number> is taken to be
  696.        the alternate line number and the <name> is taken to be the
  697.        alternate file name.
  698.  
  699.     "opts [option]"
  700.        where [option] is one of the following:
  701.  
  702.           load <filename>  - Load options from the specified file
  703.           save <filename>  - Save options to the specified file
  704.           portname <xxx>   - Set the name of the editor's AREXX port to
  705.                              the specified value
  706.           screen <name>    - Close the SCMSG window and reopen it on the
  707.                              specified public screen.
  708.  
  709.   The default value for the GOTOLINE option, intended for use with the SE 
  710.   editor, is now
  711.  
  712.      LL "%l\n" DM %m
  713.  
  714.   instead of just
  715.  
  716.      LL "%l\n"
  717.  
  718.   This displays the message text in the message line of SE after taking you 
  719.   to the line of the message.
  720.  
  721. =====================
  722. Other Utility Changes
  723. =====================
  724.  
  725. Fixed in 6.3
  726.  
  727.  ASM could produce a BSS hunk with size 0, which confused
  728.  the linker.
  729.  
  730.  ASM did not support the statement:    NAME equ "string"
  731.  
  732.  Any time you had anything after a BSS section besides another
  733.  BSS section, a bad executable was produced.
  734.  
  735.  ASM did not generate a relocation for an external accessed
  736.  via the addressing mode used in the following instruction:
  737.  
  738.     move.w   extern_name(a7,d2.w*2),d0
  739.  
  740.  ASM did not detect that it is an error for bitfield instructions
  741.  to use post-increment addressing.
  742.  
  743.  The "equr" directive in ASM incorrectly replaced strings which were
  744.  substrings of a longer word.  equr should only replace exact matches
  745.  of strings.
  746.  
  747.  The CPUSHA instruction in ASM did not handle parenthese around its
  748.  parameter.  It now does.
  749.  
  750.  ASM did not receive the value of the CPU switch when invoked from SC.
  751.  
  752.  ASM gave "invalid effective address for opcode" for "pmove d0,tt0".
  753.  This is a valid mode unless the CPR, DRP or SRP register is the
  754.  target.
  755.  
  756.  BPKT instruction generated incorrect warnings from ASM.
  757.  
  758.  ASM incorrectly generated H_EXT32 references in some cases where it
  759.  should have generated H_EXT16.
  760.  
  761.  ASM did not recognize valid 68040 registers ITT0 and ITT1.
  762.  
  763.  % was not recognized by ASM as the modulus operator.
  764.  
  765.  ASM put PC-relative displacement in the wrong location in the
  766.  instruction for some cases.
  767.  
  768.  OML could trash a library when replacing an object in that library.
  769.  
  770.  SMAKE did not expand $@ correctly in some instances.
  771.  
  772.  SCSETUP copied an icon for "Ram Disk" into SYS: if invoked on RAM:.
  773.  
  774. Fixed in 6.2
  775.  
  776.  ASM's macro handling with respect to local labels was broken.
  777.  
  778.  REG was not implemented in ASM.
  779.  
  780.  ASM did not detect zero-length short branches.
  781.  
  782. Fixed in 6.1
  783.  
  784.  SMAKE didn't read the tooltypes array as documented; it also reported that
  785.  A: is a "bad drive specifier" when it was used in a target.
  786.  
  787.  Closing the SMAKE window after SLINK started caused a system crash.
  788.  
  789.  SMAKE did not use the SYS_UserShell tag when calling the System() routine
  790.  under AmigaDOS 2.0.  It now does.
  791.  
  792.  If multiple targets were passed to SMAKE on the command line and the first 
  793.  was up to date, the subsequent targets were not built.
  794.  
  795.  ASM didn't deal with packed decimal mode constants correctly.
  796.  
  797.  OML gave a "phase error" if you attempted to place object files in
  798.  the library that contained chip data.
  799.  
  800.  LCTOSC and DUMPBOJ did not set the return code correctly.
  801.  
  802.  LCTOSC incorrectly translated '-Ln' to 'LINK DEBUGSTRIP' instead of 'LINK
  803.  STRIPDEBUG'
  804.  
  805.  HyperGST could not locate header files obtained from the local project
  806.  if invoked from WorkBench.
  807.  
  808.  SLINK did not always set the execute bit on the generated executables.
  809.  
  810.  LPROF/LSTAT were giving strange results when used on programs with
  811.  multiple code hunks.  This is a very long-standing bug dating back to
  812.  version 5.0.
  813.  
  814.  Scsetup did not correctly process the '?' parameter when invoked from
  815.  the Shell.  It printed its command template, then started working on
  816.  the current directory as if no parameters were entered.
  817.  
  818.  SCOPTS only saved to ENV: when asked to "Save Default".  It now saves to
  819.  ENVARC: as well.
  820.  
  821. ===============================
  822. Documentation/Help File Changes
  823. ===============================
  824.  
  825. Fixed in 6.3
  826.  
  827.  The results of the COVER example in SC:EXAMPLES/COVER did not match
  828.  the results specified in the read.me file.  The read.me file was
  829.  updated to reflect reality.
  830.  
  831. Fixed in 6.2
  832.  
  833.  None
  834.  
  835. Fixed in 6.1
  836.  
  837.  The sc.guide hypertext file incorrectly listed 255 as the default value
  838.  for the IDENTIFIERLENGTH option, instead of the correct value of 31.
  839.  255 is the maximum value.
  840.  
  841.  Some new "Common Problems" were added to the Common Problems document.
  842.  
  843.  The scmsg.guide hypertext file was modified to add Error 145, which is
  844.  new to this patch release, and to update or add descriptions for Warning 7,
  845.  Error 82, Warning 184, Warning 198, and Error 200.  In addition, the Global 
  846.  Optimizer warnings which were left out of the documentation were added to
  847.  the Compiler Errors and Warnings section of scmsg.guide.  The warnings 
  848.  added are warnings 301, 302, 303, 304, 305 and Note 306.
  849.  
  850.  Additional information was added to the ANSI compiler option description
  851.  in sc.guide.  The ANSI option has effects other than simply turning on 
  852.  warning messages.  These effects are now described.
  853.  
  854.  Three data item names and one function were added to sc_lib.guide.  All 
  855.  four additions are listed separately in the main Library Functions help 
  856.  screen under the button "Newly Documented Functions and Data Names".
  857.  
  858.  Additional corrections to the documentation can be found in the "Changes
  859.  to the Documentation" help screen (sc_changes.guide) under the button
  860.  "Version 6.1 (Error Correction Patch) Changes".
  861.  
  862.  The "compile.ced" macro intended for use with CygnusEd had a bug in its 
  863.  use of the "jumpto" command.  "jumpto" expects both a line number and a 
  864.  column number, and only the line number was provided.  CygnusEd users may 
  865.  want to copy the new version of the macro into their REXX:CED drawer.
  866.  
  867.  The TurboText macros referenced explicit directory paths, but the 
  868.  directory was renamed in the final version; therefore, they did not work 
  869.  correctly as installed.  The TurboText directory has been renamed.  
  870.  Please reinstall these macros if you had problems with them in 6.0.
  871.  
  872. ======================
  873. List of Modified Files
  874. ======================
  875.  
  876. The following files were modified during the 6.3 patch installation
  877. process.  If they have version numbers, the version should be 6.3.
  878.  
  879. Drawer       Files
  880.  
  881. SC:C         se, cpr, cprx, cprk, hypergst, asm, sc5, smake, scmsg,
  882.              omd
  883.  
  884. SC:LIBS      sc1.library, sc2.library, schi.library, scpeep.library,
  885.              scdebug.library, sclist.library scgo.library
  886.  
  887. SC:LIB       all .lib files, c.o, cback.o, cres.o, catch.o, catchres.o
  888.  
  889. SC:HELP      sc_6.3.guide
  890.  
  891. SC:SOURCE    c.a, cback.a
  892.  
  893. SC:INCLUDE   math.h
  894.  
  895. The following files were modified during the 6.3 patch installation
  896. process, but are the same as they were in version 6.2.  If they have
  897. version numbers, the version should be 6.2.
  898.  
  899. Drawer       Files
  900.  
  901. SC:C         lctosc, slink
  902.  
  903. SC:INCLUDE   stdio.h
  904.  
  905. SC:HELP      sc_6.2.guide
  906.  
  907. SC:SOURCE    libinit.c
  908.  
  909.  
  910. The following files were modified during the 6.3 patch installation
  911. process, but are the same as they were in version 6.1.  If they have
  912. version numbers, the version should be 6.1.
  913.  
  914. Drawer       Files
  915.  
  916. SC:          read.me
  917.  
  918. SC:C         scompact, dumpobj, oml, lstat, lprof, tb
  919.  
  920. SC:ENV       se.dat
  921.  
  922. SC:LIBS      sekeymap.library
  923.  
  924. SC:INCLUDE   fcntl.h, stat.h, dos.h, m68881.h, mffp.h, mieeedoub.h,
  925.              stdarg.h, sys/dir.h, proto/all.h, proto/layers.h, 
  926.              pragmas/intuition_pragmas.h
  927.  
  928. SC:REXX      findsym.se, showcli.cpr, showprocess.cpr
  929.  
  930. SC:HELP      sc_prob.guide, sc_lib.guide, sc_6.1.guide, scmsg.guide,
  931.              sc_util.guide, sc.guide, cpr.guide
  932.  
  933. SC:SOURCE    autoopenfail.c, _main.c, _oserr.c, intuitlib.c, _cxferr.c,
  934.              c.a
  935.  
  936. SC:EXTRAS    TTX/instructions, CED/rexx/ced/Compile.ced
  937.  
  938.  
  939.